home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1996 #15 / Monster Media Number 15 (Monster Media)(July 1996).ISO / prog_bas / t2win_32.zip / _MATRIX.FRM < prev    next >
Text File  |  1996-05-14  |  24KB  |  957 lines

  1. VERSION 4.00
  2. Begin VB.Form frmMatrix 
  3.    BorderStyle     =   4  'Fixed ToolWindow
  4.    Caption         =   "Matrix"
  5.    ClientHeight    =   4845
  6.    ClientLeft      =   1890
  7.    ClientTop       =   3270
  8.    ClientWidth     =   7485
  9.    Height          =   5250
  10.    Left            =   1830
  11.    MaxButton       =   0   'False
  12.    MDIChild        =   -1  'True
  13.    ScaleHeight     =   4845
  14.    ScaleWidth      =   7485
  15.    ShowInTaskbar   =   0   'False
  16.    Top             =   2925
  17.    Width           =   7605
  18.    Begin VB.TextBox txt_Result 
  19.       BackColor       =   &H00C0C0C0&
  20.       BorderStyle     =   0  'None
  21.       Height          =   4110
  22.       Left            =   105
  23.       Locked          =   -1  'True
  24.       MultiLine       =   -1  'True
  25.       ScrollBars      =   2  'Vertical
  26.       TabIndex        =   0
  27.       Top             =   630
  28.       Width           =   7260
  29.    End
  30.    Begin Threed.SSPanel SSPanel1 
  31.       Align           =   1  'Align Top
  32.       Height          =   480
  33.       Left            =   0
  34.       TabIndex        =   1
  35.       Top             =   0
  36.       Width           =   7485
  37.       _Version        =   65536
  38.       _ExtentX        =   13203
  39.       _ExtentY        =   847
  40.       _StockProps     =   15
  41.       ForeColor       =   -2147483640
  42.       BackColor       =   12632256
  43.       Begin VB.ComboBox cmb_Function 
  44.          Height          =   315
  45.          Left            =   1365
  46.          TabIndex        =   2
  47.          Top             =   90
  48.          Width           =   4785
  49.       End
  50.       Begin Threed.SSCommand cmdNP 
  51.          Height          =   300
  52.          Index           =   1
  53.          Left            =   7140
  54.          TabIndex        =   6
  55.          Top             =   90
  56.          Width           =   255
  57.          _Version        =   65536
  58.          _ExtentX        =   450
  59.          _ExtentY        =   529
  60.          _StockProps     =   78
  61.          Caption         =   ">"
  62.          BevelWidth      =   1
  63.          Font3D          =   3
  64.          RoundedCorners  =   0   'False
  65.          Outline         =   0   'False
  66.       End
  67.       Begin Threed.SSCommand cmdNP 
  68.          Height          =   300
  69.          Index           =   0
  70.          Left            =   6300
  71.          TabIndex        =   5
  72.          Top             =   90
  73.          Width           =   255
  74.          _Version        =   65536
  75.          _ExtentX        =   450
  76.          _ExtentY        =   529
  77.          _StockProps     =   78
  78.          Caption         =   "<"
  79.          BevelWidth      =   1
  80.          Font3D          =   3
  81.          RoundedCorners  =   0   'False
  82.          Outline         =   0   'False
  83.       End
  84.       Begin VB.Label Label2 
  85.          Caption         =   "&Select a function"
  86.          Height          =   255
  87.          Left            =   90
  88.          TabIndex        =   4
  89.          Top             =   120
  90.          Width           =   1275
  91.       End
  92.       Begin Threed.SSCommand SSCommand1 
  93.          Default         =   -1  'True
  94.          Height          =   300
  95.          Left            =   6615
  96.          TabIndex        =   3
  97.          Top             =   90
  98.          Width           =   465
  99.          _Version        =   65536
  100.          _ExtentX        =   820
  101.          _ExtentY        =   529
  102.          _StockProps     =   78
  103.          Caption         =   "&Go"
  104.          BevelWidth      =   1
  105.          RoundedCorners  =   0   'False
  106.          Outline         =   0   'False
  107.       End
  108.    End
  109. End
  110. Attribute VB_Name = "frmMatrix"
  111. Attribute VB_Creatable = False
  112. Attribute VB_Exposed = False
  113. Option Explicit
  114. Option Base 1
  115.  
  116. Private Const Iteration = 250
  117.  
  118. Dim IsLoaded         As Integer
  119.  
  120. Dim TimerStartOk     As Integer
  121. Dim TimerCloseOk     As Integer
  122.  
  123. Dim TimerHandle      As Integer
  124. Dim TimerValue       As Long
  125.  
  126. Private Sub cmdNP_Click(Index As Integer)
  127.  
  128.    Call sub_NextPrev(cmb_Function, Index)
  129.  
  130. End Sub
  131.  
  132.  
  133. Private Sub cmb_Function_Click()
  134.    
  135.    If (IsLoaded = False) Then Exit Sub
  136.    
  137.    Call cDisableFI(mdiT2W.Picture1)
  138.    
  139.    txt_Result = ""
  140.    
  141.    DoEvents
  142.    
  143.    Select Case cmb_Function.ListIndex
  144.       Case 0
  145.          Call TestMatrixAdd
  146.       Case 1
  147.          Call TestMatrixSub
  148.       Case 2
  149.          Call TestMatrixMul
  150.       Case 3
  151.          Call TestMatrixCopy
  152.       Case 4
  153.          Call TestMatrixCompare
  154.       Case 5
  155.          Call TestMatrixFill
  156.       Case 6
  157.          Call TestMatrixDet
  158.       Case 7
  159.          Call TestMatrixInv
  160.       Case 8
  161.          Call TestMatrixTranspose
  162.       Case 9
  163.          Call TestMatrixMinorCofactor
  164.       Case 10
  165.          Call TestMatrixSymToeplitz
  166.    End Select
  167.  
  168.    DoEvents
  169.    Call cEnableFI(mdiT2W.Picture1)
  170.    
  171. End Sub
  172.  
  173.  
  174. Private Sub Form_Activate()
  175.  
  176.    mdiT2W.Label2.Caption = cInsertBlocks(mdiT2W.Label2.Tag, "" & Iteration)
  177.  
  178. End Sub
  179.  
  180. Private Sub Form_Load()
  181.  
  182.    IsLoaded = False
  183.    
  184.    Show
  185.  
  186.    Call sub_Load_Combo(cmb_Function, T2WDirInst + "_matrix.t2w")
  187.    
  188.    IsLoaded = True
  189.    
  190. End Sub
  191.  
  192. Private Sub SSCommand1_Click()
  193.    
  194.    Call cmb_Function_Click
  195.    
  196. End Sub
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204. Private Sub TestMatrixAdd()
  205.  
  206.    Dim lngResult        As Long
  207.    Dim strResult        As String
  208.    Dim strDisplay       As String
  209.    
  210.    Dim i                As Integer
  211.    Dim j                As Integer
  212.    
  213.    Dim TmpA             As String
  214.    Dim TmpB             As String
  215.    Dim TmpC             As String
  216.  
  217.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  218.    ReDim ArrayB(1 To 3, 1 To 3) As Double
  219.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  220.  
  221.    Randomize Timer
  222.  
  223.    For i = 1 To 3
  224.       For j = 1 To 3
  225.          ArrayA(i, j) = Int(RandI * Rnd(1))
  226.          ArrayB(i, j) = Int(RandI * Rnd(1))
  227.          ArrayC(i, j) = 0
  228.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  229.          TmpB = TmpB + Format$(ArrayB(i, j), "00000  ")
  230.       Next j
  231.       TmpA = TmpA + vbCrLf
  232.       TmpB = TmpB + vbCrLf
  233.    Next i
  234.  
  235.    Call cMatrixAdd(3, ArrayA(), ArrayB(), ArrayC())
  236.  
  237.    For i = 1 To 3
  238.       For j = 1 To 3
  239.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  240.       Next j
  241.       TmpC = TmpC + vbCrLf
  242.    Next i
  243.  
  244.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  245.    strDisplay = strDisplay & "Second array (B) is " & vbCrLf & vbCrLf & TmpB & vbCrLf
  246.    strDisplay = strDisplay & "(A) + (B) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  247.  
  248.    txt_Result = strDisplay
  249.  
  250.    'time the function
  251.  
  252.    TimerHandle = cTimerOpen()
  253.    TimerStartOk = cTimerStart(TimerHandle)
  254.    
  255.    For i = 1 To Iteration
  256.       Call cMatrixAdd(3, ArrayA(), ArrayB(), ArrayC())
  257.    Next i
  258.    
  259.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  260.    
  261.    TimerCloseOk = cTimerClose(TimerHandle)
  262.  
  263. End Sub
  264.  
  265.  
  266.  
  267. Private Sub TestMatrixSub()
  268.  
  269.    Dim lngResult        As Long
  270.    Dim strResult        As String
  271.    Dim strDisplay       As String
  272.    
  273.    Dim i                As Integer
  274.    Dim j                As Integer
  275.    
  276.    Dim TmpA             As String
  277.    Dim TmpB             As String
  278.    Dim TmpC             As String
  279.  
  280.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  281.    ReDim ArrayB(1 To 3, 1 To 3) As Double
  282.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  283.  
  284.    Randomize Timer
  285.  
  286.    For i = 1 To 3
  287.       For j = 1 To 3
  288.          ArrayA(i, j) = Int(RandI * Rnd(1))
  289.          ArrayB(i, j) = Int(RandI * Rnd(1))
  290.          ArrayC(i, j) = 0
  291.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  292.          TmpB = TmpB + Format$(ArrayB(i, j), "00000  ")
  293.       Next j
  294.       TmpA = TmpA + vbCrLf
  295.       TmpB = TmpB + vbCrLf
  296.    Next i
  297.  
  298.    Call cMatrixSub(3, ArrayA(), ArrayB(), ArrayC())
  299.  
  300.    For i = 1 To 3
  301.       For j = 1 To 3
  302.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  303.       Next j
  304.       TmpC = TmpC + vbCrLf
  305.    Next i
  306.  
  307.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  308.    strDisplay = strDisplay & "Second array (B) is " & vbCrLf & vbCrLf & TmpB & vbCrLf
  309.    strDisplay = strDisplay & "(A) - (B) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  310.  
  311.    txt_Result = strDisplay
  312.  
  313.    'time the function
  314.  
  315.    TimerHandle = cTimerOpen()
  316.    TimerStartOk = cTimerStart(TimerHandle)
  317.    
  318.    For i = 1 To Iteration
  319.       Call cMatrixSub(3, ArrayA(), ArrayB(), ArrayC())
  320.    Next i
  321.    
  322.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  323.    
  324.    TimerCloseOk = cTimerClose(TimerHandle)
  325.  
  326. End Sub
  327.  
  328. Private Sub TestMatrixMul()
  329.  
  330.    Dim lngResult        As Long
  331.    Dim strResult        As String
  332.    Dim strDisplay       As String
  333.    
  334.    Dim i                As Integer
  335.    Dim j                As Integer
  336.    
  337.    Dim TmpA             As String
  338.    Dim TmpB             As String
  339.    Dim TmpC             As String
  340.  
  341.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  342.    ReDim ArrayB(1 To 3, 1 To 3) As Double
  343.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  344.  
  345.    Randomize Timer
  346.  
  347.    For i = 1 To 3
  348.       For j = 1 To 3
  349.          ArrayA(i, j) = Int(RandI * Rnd(1))
  350.          ArrayB(i, j) = Int(RandI * Rnd(1))
  351.          ArrayC(i, j) = 0
  352.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  353.          TmpB = TmpB + Format$(ArrayB(i, j), "00000  ")
  354.       Next j
  355.       TmpA = TmpA + vbCrLf
  356.       TmpB = TmpB + vbCrLf
  357.    Next i
  358.  
  359.    Call cMatrixMul(3, ArrayA(), ArrayB(), ArrayC())
  360.  
  361.    For i = 1 To 3
  362.       For j = 1 To 3
  363.          TmpC = TmpC + Format$(ArrayC(i, j), "0000000000  ")
  364.       Next j
  365.       TmpC = TmpC + vbCrLf
  366.    Next i
  367.  
  368.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  369.    strDisplay = strDisplay & "Second array (B) is " & vbCrLf & vbCrLf & TmpB & vbCrLf
  370.    strDisplay = strDisplay & "(A) * (B) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  371.  
  372.    txt_Result = strDisplay
  373.  
  374.    'time the function
  375.  
  376.    TimerHandle = cTimerOpen()
  377.    TimerStartOk = cTimerStart(TimerHandle)
  378.    
  379.    For i = 1 To Iteration
  380.       Call cMatrixMul(3, ArrayA(), ArrayB(), ArrayC())
  381.    Next i
  382.    
  383.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  384.    
  385.    TimerCloseOk = cTimerClose(TimerHandle)
  386.  
  387. End Sub
  388.  
  389. Private Sub TestMatrixCopy()
  390.  
  391.    Dim lngResult        As Long
  392.    Dim strResult        As String
  393.    Dim strDisplay       As String
  394.    
  395.    Dim i                As Integer
  396.    Dim j                As Integer
  397.    
  398.    Dim TmpA             As String
  399.    Dim TmpC             As String
  400.  
  401.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  402.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  403.  
  404.    Randomize Timer
  405.  
  406.    For i = 1 To 3
  407.       For j = 1 To 3
  408.          ArrayA(i, j) = Int(RandI * Rnd(1))
  409.          ArrayC(i, j) = 0
  410.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  411.       Next j
  412.       TmpA = TmpA + vbCrLf
  413.    Next i
  414.  
  415.    Call cMatrixCopy(3, ArrayA(), ArrayC())
  416.  
  417.    For i = 1 To 3
  418.       For j = 1 To 3
  419.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  420.       Next j
  421.       TmpC = TmpC + vbCrLf
  422.    Next i
  423.  
  424.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  425.    strDisplay = strDisplay & "(A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  426.  
  427.    txt_Result = strDisplay
  428.  
  429.    'time the function
  430.  
  431.    TimerHandle = cTimerOpen()
  432.    TimerStartOk = cTimerStart(TimerHandle)
  433.    
  434.    For i = 1 To Iteration
  435.       Call cMatrixCopy(3, ArrayA(), ArrayC())
  436.    Next i
  437.    
  438.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  439.    
  440.    TimerCloseOk = cTimerClose(TimerHandle)
  441.  
  442. End Sub
  443.  
  444. Private Sub TestMatrixCompare()
  445.  
  446.    Dim intResult        As Integer
  447.    Dim strResult        As String
  448.    Dim strDisplay       As String
  449.    
  450.    Dim i                As Integer
  451.    Dim j                As Integer
  452.    
  453.    Dim TmpA             As String
  454.    Dim TmpC             As String
  455.  
  456.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  457.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  458.  
  459.    Randomize Timer
  460.  
  461.    For i = 1 To 3
  462.       For j = 1 To 3
  463.          ArrayA(i, j) = Int(RandI * Rnd(1))
  464.          ArrayC(i, j) = Int(RandI * Rnd(1))
  465.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  466.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  467.       Next j
  468.       TmpA = TmpA + vbCrLf
  469.       TmpC = TmpC + vbCrLf
  470.    Next i
  471.  
  472.    intResult = cMatrixCompare(3, ArrayA(), ArrayC())
  473.  
  474.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  475.    strDisplay = strDisplay & "Second array (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  476.    strDisplay = strDisplay & "Compare of (A) = (C) is " & intResult & vbCrLf & vbCrLf
  477.  
  478.    TmpA = ""
  479.    TmpC = ""
  480.  
  481.    For i = 1 To 3
  482.       For j = 1 To 3
  483.          ArrayA(i, j) = Int(RandI * Rnd(1))
  484.          ArrayC(i, j) = ArrayA(i, j)
  485.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  486.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  487.       Next j
  488.       TmpA = TmpA + vbCrLf
  489.       TmpC = TmpC + vbCrLf
  490.    Next i
  491.  
  492.    intResult = cMatrixCompare(3, ArrayA(), ArrayC())
  493.  
  494.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  495.    strDisplay = strDisplay & "Second array (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  496.    strDisplay = strDisplay & "Compare of (A) = (C) is " & intResult & vbCrLf & vbCrLf
  497.  
  498.    txt_Result = strDisplay
  499.  
  500.    'time the function
  501.  
  502.    TimerHandle = cTimerOpen()
  503.    TimerStartOk = cTimerStart(TimerHandle)
  504.    
  505.    For i = 1 To Iteration
  506.       intResult = cMatrixCompare(3, ArrayA(), ArrayC())
  507.    Next i
  508.    
  509.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  510.    
  511.    TimerCloseOk = cTimerClose(TimerHandle)
  512.  
  513. End Sub
  514.  
  515. Private Sub TestMatrixFill()
  516.  
  517.    Dim intResult        As Integer
  518.    Dim strResult        As String
  519.    Dim strDisplay       As String
  520.    
  521.    Dim i                As Integer
  522.    Dim j                As Integer
  523.    
  524.    Dim TmpA             As String
  525.  
  526.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  527.  
  528.    Randomize Timer
  529.  
  530.    intResult = cMatrixFill(3, ArrayA(), MATRIX_ZERO)
  531.  
  532.    For i = 1 To 3
  533.       For j = 1 To 3
  534.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  535.       Next j
  536.       TmpA = TmpA + vbCrLf
  537.    Next i
  538.    
  539.    strDisplay = strDisplay & "Matrix ZERO is " & vbCrLf & vbCrLf & TmpA & vbCrLf & vbCrLf
  540.  
  541.    TmpA = ""
  542.    intResult = cMatrixFill(3, ArrayA(), MATRIX_UNIT)
  543.  
  544.    For i = 1 To 3
  545.       For j = 1 To 3
  546.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  547.       Next j
  548.       TmpA = TmpA + vbCrLf
  549.    Next i
  550.    
  551.    strDisplay = strDisplay & "Matrix UNIT is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  552.    
  553.    txt_Result = strDisplay
  554.  
  555.    'time the function
  556.  
  557.    TimerHandle = cTimerOpen()
  558.    TimerStartOk = cTimerStart(TimerHandle)
  559.    
  560.    For i = 1 To Iteration
  561.       Call cMatrixFill(3, ArrayA(), MATRIX_ZERO)
  562.    Next i
  563.    
  564.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  565.    
  566.    TimerCloseOk = cTimerClose(TimerHandle)
  567.    
  568. End Sub
  569.  
  570. Private Sub TestMatrixDet()
  571.  
  572.    Dim intResult        As Integer
  573.    Dim strResult        As String
  574.    Dim strDisplay       As String
  575.    
  576.    Dim i                As Integer
  577.    Dim j                As Integer
  578.    
  579.    Dim det              As Double
  580.    Dim nSize            As Integer
  581.  
  582.    Dim TmpA             As String
  583.  
  584.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  585.  
  586.    Randomize Timer
  587.  
  588.    nSize = 3
  589.    
  590.    ReDim ArrayA(1 To nSize, 1 To nSize) As Double
  591.  
  592.    Randomize Timer
  593.  
  594.    For i = 1 To nSize
  595.       For j = 1 To nSize
  596.          ArrayA(i, j) = Int(RandI * Rnd(1))
  597.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  598.       Next j
  599.       TmpA = TmpA + vbCrLf
  600.    Next i
  601.  
  602.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  603.    strDisplay = strDisplay & "Det of (A) = " & cMatrixDet(nSize, ArrayA()) & vbCrLf & vbCrLf
  604.  
  605.    txt_Result = strDisplay
  606.  
  607.    'time the function
  608.  
  609.    TimerHandle = cTimerOpen()
  610.    TimerStartOk = cTimerStart(TimerHandle)
  611.    
  612.    For i = 1 To Iteration
  613.       det = cMatrixDet(nSize, ArrayA())
  614.    Next i
  615.    
  616.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  617.    
  618.    TimerCloseOk = cTimerClose(TimerHandle)
  619.  
  620. End Sub
  621.  
  622. Private Sub TestMatrixInv()
  623.  
  624.    Dim intResult        As Integer
  625.    Dim strResult        As String
  626.    Dim strDisplay       As String
  627.    
  628.    Dim i                As Integer
  629.    Dim j                As Integer
  630.    
  631.    Dim TmpA             As String
  632.    Dim TmpC             As String
  633.  
  634.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  635.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  636.  
  637.    Randomize Timer
  638.  
  639.    intResult = cMatrixFill(3, ArrayA(), MATRIX_ZERO)
  640.    intResult = cMatrixFill(3, ArrayC(), MATRIX_UNIT)
  641.  
  642.    For i = 1 To 3
  643.       For j = 1 To 3
  644.          ArrayA(i, j) = Int(RandI * Rnd(1))
  645.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  646.       Next j
  647.       TmpA = TmpA + vbCrLf
  648.    Next i
  649.    
  650.    intResult = cMatrixInv(3, ArrayA(), ArrayC())
  651.  
  652.    If (intResult = True) Then
  653.  
  654.       For i = 1 To 3
  655.          For j = 1 To 3
  656.             TmpC = TmpC + Format$(ArrayC(i, j), "0.0000000  ")
  657.          Next j
  658.          TmpC = TmpC + vbCrLf
  659.       Next i
  660.  
  661.    Else
  662.  
  663.       TmpC = " 'can be inverted'"
  664.  
  665.    End If
  666.  
  667.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  668.    strDisplay = strDisplay & "Inv of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  669.  
  670.    TmpA = ""
  671.    TmpC = ""
  672.  
  673.    intResult = cMatrixFill(3, ArrayA(), MATRIX_ZERO)
  674.    intResult = cMatrixFill(3, ArrayC(), MATRIX_ZERO)
  675.  
  676.    For i = 1 To 3
  677.       For j = 1 To 3
  678.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  679.       Next j
  680.       TmpA = TmpA + vbCrLf
  681.    Next i
  682.    
  683.    intResult = cMatrixInv(3, ArrayA(), ArrayC())
  684.  
  685.    If (intResult = True) Then
  686.  
  687.       For i = 1 To 3
  688.          For j = 1 To 3
  689.             TmpC = TmpC + Format$(ArrayC(i, j), "0.0000000  ")
  690.          Next j
  691.          TmpC = TmpC + vbCrLf
  692.       Next i
  693.  
  694.    Else
  695.  
  696.       TmpC = " 'can be inverted'" + vbCrLf
  697.  
  698.    End If
  699.  
  700.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  701.    strDisplay = strDisplay & "Inv of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  702.  
  703.    TmpA = ""
  704.    TmpC = ""
  705.  
  706.    intResult = cMatrixFill(3, ArrayA(), MATRIX_UNIT)
  707.    intResult = cMatrixFill(3, ArrayC(), MATRIX_ZERO)
  708.  
  709.    For i = 1 To 3
  710.       For j = 1 To 3
  711.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  712.       Next j
  713.       TmpA = TmpA + vbCrLf
  714.    Next i
  715.    
  716.    intResult = cMatrixInv(3, ArrayA(), ArrayC())
  717.  
  718.    If (intResult = True) Then
  719.  
  720.       For i = 1 To 3
  721.          For j = 1 To 3
  722.             TmpC = TmpC + Format$(ArrayC(i, j), "0.0000000  ")
  723.          Next j
  724.          TmpC = TmpC + vbCrLf
  725.       Next i
  726.  
  727.    Else
  728.  
  729.       TmpC = " 'can be inverted'" + vbCrLf
  730.  
  731.    End If
  732.  
  733.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  734.    strDisplay = strDisplay & "Inv of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  735.  
  736.    txt_Result = strDisplay
  737.  
  738.    'time the function
  739.  
  740.    For i = 1 To 3
  741.       For j = 1 To 3
  742.          ArrayA(i, j) = Int(RandI * Rnd(1))
  743.       Next j
  744.    Next i
  745.  
  746.    TimerHandle = cTimerOpen()
  747.    TimerStartOk = cTimerStart(TimerHandle)
  748.    
  749.    For i = 1 To Iteration
  750.       Call cMatrixInv(3, ArrayA(), ArrayC())
  751.    Next i
  752.    
  753.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  754.    
  755.    TimerCloseOk = cTimerClose(TimerHandle)
  756.  
  757. End Sub
  758.  
  759. Private Sub TestMatrixTranspose()
  760.  
  761.    Dim intResult        As Integer
  762.    Dim strResult        As String
  763.    Dim strDisplay       As String
  764.    
  765.    Dim i                As Integer
  766.    Dim j                As Integer
  767.    
  768.    Dim TmpA             As String
  769.    Dim TmpC             As String
  770.  
  771.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  772.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  773.  
  774.    Randomize Timer
  775.  
  776.    For i = 1 To 3
  777.       For j = 1 To 3
  778.          ArrayA(i, j) = Int(RandI * Rnd(1))
  779.          ArrayC(i, j) = 0
  780.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  781.       Next j
  782.       TmpA = TmpA + vbCrLf
  783.    Next i
  784.  
  785.    Call cMatrixTranspose(3, ArrayA(), ArrayC())
  786.  
  787.    For i = 1 To 3
  788.       For j = 1 To 3
  789.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  790.       Next j
  791.       TmpC = TmpC + vbCrLf
  792.    Next i
  793.  
  794.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  795.    strDisplay = strDisplay & "Transpose of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  796.  
  797.    TmpA = ""
  798.    TmpC = ""
  799.    
  800.    Call cMatrixFill(3, ArrayA(), MATRIX_UNIT)
  801.  
  802.    For i = 1 To 3
  803.       For j = 1 To 3
  804.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  805.       Next j
  806.       TmpA = TmpA + vbCrLf
  807.    Next i
  808.  
  809.    Call cMatrixTranspose(3, ArrayA(), ArrayC())
  810.  
  811.    For i = 1 To 3
  812.       For j = 1 To 3
  813.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  814.       Next j
  815.       TmpC = TmpC + vbCrLf
  816.    Next i
  817.  
  818.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  819.    strDisplay = strDisplay & "Transpose of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  820.  
  821.    txt_Result = strDisplay
  822.  
  823.    'time the function
  824.  
  825.    For i = 1 To 3
  826.       For j = 1 To 3
  827.          ArrayA(i, j) = Int(RandI * Rnd(1))
  828.       Next j
  829.    Next i
  830.  
  831.    TimerHandle = cTimerOpen()
  832.    TimerStartOk = cTimerStart(TimerHandle)
  833.    
  834.    For i = 1 To Iteration
  835.       Call cMatrixTranspose(3, ArrayA(), ArrayC())
  836.    Next i
  837.    
  838.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  839.    
  840.    TimerCloseOk = cTimerClose(TimerHandle)
  841.  
  842. End Sub
  843.  
  844. Private Sub TestMatrixMinorCofactor()
  845.  
  846.    Dim intResult        As Integer
  847.    Dim strResult        As String
  848.    Dim strDisplay       As String
  849.    
  850.    Dim i                As Integer
  851.    Dim j                As Integer
  852.    
  853.    Dim cofact           As Double
  854.    Dim nSize            As Integer
  855.  
  856.    Dim TmpA             As String
  857.  
  858.    nSize = 3
  859.    
  860.    ReDim ArrayA(1 To nSize, 1 To nSize) As Double
  861.  
  862.    Randomize Timer
  863.  
  864.    For i = 1 To nSize
  865.       For j = 1 To nSize
  866.          ArrayA(i, j) = Int(RandI * Rnd(1))
  867.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  868.       Next j
  869.       TmpA = TmpA + vbCrLf
  870.    Next i
  871.  
  872.    strDisplay = strDisplay & "Array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  873.    
  874.    For i = 1 To 3
  875.       For j = 1 To 3
  876.          strDisplay = strDisplay & "CoFactor and Minor of A(" & i & "," & j & ") are " & cMatrixCoFactor(nSize, ArrayA(), i, j) & " and " & cMatrixMinor(nSize, ArrayA(), i, j) & vbCrLf
  877.       Next j
  878.       strDisplay = strDisplay & vbCrLf
  879.    Next i
  880.    
  881.    txt_Result = strDisplay
  882.  
  883.    'time the function
  884.  
  885.    TimerHandle = cTimerOpen()
  886.    TimerStartOk = cTimerStart(TimerHandle)
  887.    
  888.    For i = 1 To Iteration
  889.       cofact = cMatrixCoFactor(nSize, ArrayA(), 1, 1)
  890.    Next i
  891.    
  892.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  893.    
  894.    TimerCloseOk = cTimerClose(TimerHandle)
  895.  
  896. End Sub
  897.  
  898. Private Sub TestMatrixSymToeplitz()
  899.  
  900.    Dim intResult        As Integer
  901.    Dim strResult        As String
  902.    Dim strDisplay       As String
  903.    
  904.    Dim i                As Integer
  905.    Dim j                As Integer
  906.    
  907.    Dim TmpA             As String
  908.    Dim TmpC             As String
  909.  
  910.    ReDim ArrayA(1 To 3, 1 To 3) As Double
  911.    ReDim ArrayC(1 To 3, 1 To 3) As Double
  912.  
  913.    Randomize Timer
  914.  
  915.    For i = 1 To 1
  916.       For j = 1 To 3
  917.          ArrayA(i, j) = Int(RandI * Rnd(1))
  918.          TmpA = TmpA + Format$(ArrayA(i, j), "00000  ")
  919.       Next j
  920.       TmpA = TmpA + vbCrLf
  921.    Next i
  922.  
  923.    intResult = cMatrixSymToeplitz(3, ArrayA(), ArrayC())
  924.  
  925.    For i = 1 To 3
  926.       For j = 1 To 3
  927.          TmpC = TmpC + Format$(ArrayC(i, j), "00000  ")
  928.       Next j
  929.       TmpC = TmpC + vbCrLf
  930.    Next i
  931.  
  932.    strDisplay = strDisplay & "First array (A) is " & vbCrLf & vbCrLf & TmpA & vbCrLf
  933.    strDisplay = strDisplay & "Symmetrical Toeplitz of (A) = (C) is " & vbCrLf & vbCrLf & TmpC & vbCrLf
  934.  
  935.    txt_Result = strDisplay
  936.  
  937.    'time the function
  938.  
  939.    For i = 1 To 1
  940.       For j = 1 To 3
  941.          ArrayA(i, j) = Int(RandI * Rnd(1))
  942.       Next j
  943.    Next i
  944.  
  945.    TimerHandle = cTimerOpen()
  946.    TimerStartOk = cTimerStart(TimerHandle)
  947.    
  948.    For i = 1 To Iteration
  949.       Call cMatrixSymToeplitz(3, ArrayA(), ArrayC())
  950.    Next i
  951.    
  952.    mdiT2W.pnl_Timer = cTimerRead(TimerHandle)
  953.    
  954.    TimerCloseOk = cTimerClose(TimerHandle)
  955.  
  956. End Sub
  957.